package com.escool.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.escool.model.TbExpediente;
import com.escool.model.TbExpedienteHasMateria;
import com.escool.model.TbExpedienteMateriaHasRotacionesActividad;
import com.escool.model.TbSedeSeccionHasMateria;
@Repository
public class ExpedienteDAOImpl implements ExpedienteDAO {
	
	@Autowired
	SessionFactory sessionFactory;

	@Override
	public void add(TbExpediente tbExpediente) {
		sessionFactory.getCurrentSession().save(tbExpediente);

	}

	@Override
	public void edit(TbExpediente tbExpediente) {
		sessionFactory.getCurrentSession().update(tbExpediente);

	}

	@Override
	public List<TbExpediente> listAll() {
		// TODO Auto-generated method stub
		return sessionFactory.getCurrentSession().createQuery("from TbExpediente").list();
	}

	@Override
	public TbExpediente findById(Integer id) {
		// TODO Auto-generated method stub
		return (TbExpediente) sessionFactory.getCurrentSession().get(TbExpediente.class, id);
	}

	@Override
	public void remove(Integer id) {
		TbExpediente tbExpediente = (TbExpediente) sessionFactory.getCurrentSession().load(TbExpediente.class, id);
		if (tbExpediente != null){
			sessionFactory.getCurrentSession().delete(tbExpediente);
		}

	}

	@Override
	public List<TbSedeSeccionHasMateria> listTbSedeSeccionHasMateria(int sd_sc) {
		// TODO Auto-generated method stub
		String hql = "from TbSedeSeccionHasMateria where tbSedeHasSeccion.idSedeHasSeccion =" +sd_sc;
		return sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public void addTbExpedienteHasMateria(
			TbExpedienteHasMateria tbExpedienteHasMateria) {
		// TODO Auto-generated method stub
		
		sessionFactory.getCurrentSession().save(tbExpedienteHasMateria);
	}

	@Override
	public List<TbExpedienteHasMateria> listExpMatByMateria(Integer id) {
		// TODO Auto-generated method stub
		return sessionFactory.getCurrentSession().createQuery("from TbExpedienteHasMateria where tbSedeSeccionHasMateria.idSedeSeccionHasMateria="+id).list();
	}
	
	@Override
	public List<TbExpedienteHasMateria> listExpMatByExpediente(Integer id) {
		// TODO Auto-generated method stub
		return sessionFactory
				.getCurrentSession()
				.createQuery(
						"from TbExpedienteHasMateria where tbExpediente.idExpediente="
								+ id).list();
	}

	@Override
	public void addTbExpedienteMateriaHasRotacionesActividad(
			TbExpedienteMateriaHasRotacionesActividad ema) {
		sessionFactory.getCurrentSession().save(ema);
		
	}

	@Override
	public List<TbExpedienteMateriaHasRotacionesActividad> listActividadByExpedienteId(
			Integer id) {
		
		return sessionFactory.getCurrentSession().createQuery("from TbExpedienteMateriaHasRotacionesActividad where tbExpedienteHasMateria.tbExpediente.idExpediente="+id).list();
	}

	@Override
	public void updateTbExpedienteMateriaHasRotacionesActividad(
			TbExpedienteMateriaHasRotacionesActividad ema) {
		sessionFactory.getCurrentSession().update(ema);
		
	}

	@Override
	public List<TbExpediente> listAll(String alumnoCodigo) {
		// TODO Auto-generated method stub
		String sql = "from TbExpediente where tbAlumno.codigoAlumno = '"+alumnoCodigo+"'";
		return sessionFactory.getCurrentSession().createQuery(sql).list();
	}

	@Override
	public TbExpedienteMateriaHasRotacionesActividad findActividad(int id) {
		// TODO Auto-generated method stub
		return (TbExpedienteMateriaHasRotacionesActividad) sessionFactory.getCurrentSession().get(TbExpedienteMateriaHasRotacionesActividad.class,id);
	}

}
